by 2.6 kernel. Now blkfront can be built as a kernel module.
Signed-off-by: Xiaofeng Ling <xiaofeng.ling@intel.com>
Signed-off-by: Jeremy Katz <katzj@redhat.com>
info->vdevice = vdevice;
info->connected = BLKIF_STATE_DISCONNECTED;
info->mi = NULL;
+ info->gd = NULL;
INIT_WORK(&info->work, blkif_restart_queue, (void *)info);
info->shadow_free = 0;
/* We watch the backend */
struct xenbus_watch watch;
dev_t dev;
+ struct gendisk *gd;
int vdevice;
blkif_vdev_t handle;
int connected;
gd->flags |= GENHD_FL_CD;
add_disk(gd);
+ info->gd = gd;
return 0;
xlvbd_del(struct blkfront_info *info)
{
struct block_device *bd;
- struct gendisk *gd;
- int unused;
- request_queue_t *rq;
bd = bdget(info->dev);
if (bd == NULL)
return;
- gd = get_gendisk(info->dev, &unused);
- rq = gd->queue;
+ if (info->gd == NULL)
+ return;
- del_gendisk(gd);
- put_disk(gd);
+ del_gendisk(info->gd);
+ put_disk(info->gd);
xlbd_put_major_info(info->mi);
info->mi = NULL;
- blk_cleanup_queue(rq);
+ blk_cleanup_queue(info->rq);
bdput(bd);
}